/**
 * @file CliffReactionPlanner.h
 * @author 
 * @brief 导航模式下的悬崖响应动作
 * @version 1.0
 * @date 2020-08-19
 * 
 * @copyright Copyright (c) 2020
 * 
 */

#pragma once
#include <cstdint>
#include <vector>
#include "data_struct/robot/CliffData.h"

namespace behavior_controller
{
    class CliffReactionPlanner
    {
    public:
        /**
         * @brief 悬崖响应的构造函数
         * @return
         */
        CliffReactionPlanner(){};

        /**
         * @brief 悬崖响应的运行函数
         * @return
         */
        void run(double &linear_vel, double &angular_vel);

        /**
         * @brief 控制机器人后退转向函数
         * @return
         */
        void BackAndTurn(double &linear_vel, double &angular_vel);

        bool finished = true; //沿悬崖动作是否结束的标记
        double time_now = 0;   //用于进行时间赋值的标记，如果时间为0,才会获取当前时间，以免下个周期到来时，时间变为最新时间
    };

    //static 
    extern CliffReactionPlanner cliff_reaction_planner; //实例化悬崖响应类
} // namespace behavior_controller